package com.xiaoshuidi.cloud.module.contract.controller.admin.bill.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 账单信息
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class OrderItemInfo {
    /**
     * 账单id
     */
    @Schema(description = "账单id")
    private Long id;
    /**
     * 账单编号
     */
    private String orderNo;
    /**
     * 业务id 如 合同id 、预定id
     */
    private Long businessId;

    /**
     * 公寓id
     */
    private Long apartmentId;

    /**
     * 公寓名称
     */
    private String apartmentName;

    /**
     * 房间id
     */
    private Long roomId;

    /**
     * 房间名称
     */
    private String roomName;

    /**
     * 账单开始时间
     */
    private LocalDate startTime;
    /**
     * 账单结束时间
     */
    private LocalDate endTime;
    /**
     * 已收金额
     */
    private BigDecimal paidRentUtilities;
    /**
     * 实付金额
     */
    private BigDecimal actualPaymentAmount;
    /**
     * 账单总金额
     */
    private BigDecimal totalAmount;

    /**
     * 租金金额
     */
    private BigDecimal rentAmount;

    /**
     * 押金金额
     */
    private BigDecimal depositAmount ;

    /**
     * 杂费金额
     * */
    private BigDecimal extrasAmount ;

    /**
     * 租金押金金额
     */
    private BigDecimal rentDeposit ;

    /**
     * 优惠金额
     */
    private BigDecimal discountAmount;

    /**
     * 支付状态(unpaid 待支付 |payment 已支付|part  部分支付),
     */
    private String payStatus;

    /**
     * 审批状态(notReview  无需审核|inReview 审核中|effective 已生效|(reject 已驳回)
     */
    private String approvedStatus;

    /**
     * 待收金额
     */
    private BigDecimal receivableAmount;

    /**
     * 账单类型 default 合同账单| custom 杂费账单| free  免租期账单| meter  抄表账单| carry 结转账单 | owner 业主账单
     */
    private String orderType;

    /**
     * 账单应收款日期
     */
    @Schema(description = "账单应收款日期")
    private LocalDate oughtPayTime;

    /**
     * 此订单最晚支付时间
     */
    private LocalDate deadlinePayTime;
    /**
     * 租客姓名
     * */
    private String customerName;
    /**
     * 租客手机号
     */
    private String customerPhone;

    /**
     * 账期
     */
    @Schema(description = "账期")
    private String orderCycle;

    /**
     * 订单实际支付时间
     */
    @Schema(description = "订单实际支付时间")
    private LocalDateTime actualPayTime;

    /**
     * 账单状态名称
     */
    @Schema(description = "账单状态名称")
    private String billTypeName;

    /**
     * 实际开始时间 (结算时的实际收款/退款周期)
     */
    @Schema(description = "实际开始时间 (结算时的实际收款/退款周期)")
    private LocalDate actualStartTime;
    /**
     * 实际结束时间 (结算时的实际收款/退款周期)
     */
    @Schema(description = "实际开始时间 (结算时的实际收款/退款周期)")
    private LocalDate actualEndTime;

    /**
     * 企业账单子账单ids
     */
    List<Long> companyOrderIds;

    /**
     * 流程id
     */
    private String processInstance;

}
